using System;
using Jayway.Practices.CommonServiceManager.Configuration;

namespace Your.CommonServiceManagerAdapter.Configuration
{
	/// <summary>
	/// <see cref="IConfigurator{TImplementation}"/>
	/// </summary>
	public class YourConfigurator<TImplementation> : ConfiguratorBase<TImplementation>
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="name"></param>
		public YourConfigurator(string name = null)
			: base(name)
		{ }

		/// <summary>
		/// placeholder
		/// </summary>
		public YourContainer Container
		{
			get { throw new NotImplementedException(); }
			set { throw new NotImplementedException(); }
		}

		/// <summary>
		/// 
		/// </summary>
		public override IConfigurator<TImplementation> AsSingleton()
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="keyedConstructorParameterTypes"></param>
		/// <returns></returns>
		protected override IConfigurator<TImplementation> InjectionConstructor(params KeyedType[] keyedConstructorParameterTypes)
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="keyedInjectionPropertyNames"></param>
		/// <returns></returns>
		protected override IConfigurator<TImplementation> InjectionProperties(params KeyedName[] keyedInjectionPropertyNames)
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}
	}
}